package com.jxin.web.tmp;

import com.jxin.web.consts.HttpRspStatusEnum;
import com.jxin.web.entity.HttpRsp;

/**
 * 控制层模板类
 * @author Jxin
 * @version 1.0
 * @since 2020/1/13 20:01
 */
public class ControllerTemp {
    /**
     * 创建成功的响应实例,并带上数据实例
     * @param  data 数据实例
     * @return 响应实例
     * @author Jxin
     */
    protected <T> HttpRsp<T> createSuccessWithData(T data) {
        return new HttpRsp<>(HttpRspStatusEnum.HTTP_RES_CODE_200.getCode(),
                             HttpRspStatusEnum.HTTP_RES_CODE_200.getName(),
                             data);

    }
    /**
     * 创建成功的响应实例
     * @return 响应实例
     * @author Jxin
     */
    protected HttpRsp createSuccess() {
        return new HttpRsp<>(HttpRspStatusEnum.HTTP_RES_CODE_200.getCode(),
                             HttpRspStatusEnum.HTTP_RES_CODE_200.getName(),
                            null);


    }
    //**********************************************失败返回***********************************************************
    /**
     * 创建失败的响应实例,并带上数据实例
     * @param  data 数据实例
     * @return 响应实例
     * @author Jxin
     */
    protected <T> HttpRsp<T> createFaildWithData(T data) {
        return new HttpRsp<>(HttpRspStatusEnum.HTTP_RES_CODE_500.getCode(),
                             HttpRspStatusEnum.HTTP_RES_CODE_500.getName(),
                             data);
    }
    /**
     * 创建失败的响应实例
     * @return 响应实例
     * @author Jxin
     */
    protected HttpRsp createFaild() {
        return new HttpRsp<>(HttpRspStatusEnum.HTTP_RES_CODE_500.getCode(),
                             HttpRspStatusEnum.HTTP_RES_CODE_500.getName(),
                             null);
    }
    /**
     * 创建失败的响应实例,并指定消息文本
     * @param  msg 消息
     * @return 响应实例
     * @author Jxin
     */
    protected HttpRsp createFaildWithMsg(String msg) {
        return new HttpRsp<>(HttpRspStatusEnum.HTTP_RES_CODE_500.getCode(),
                             msg,
                             null);
    }

    /**
     * 创建入参异常返回实例
     * @return 响应实例
     * @author Jxin
     */
    protected HttpRsp createReqParamErr() {
        return new HttpRsp<>(HttpRspStatusEnum.HTTP_RES_CODE_501.getCode(),
                             HttpRspStatusEnum.HTTP_RES_CODE_501.getName(),
                             null);
    }
    //**********************************************自定义返回***********************************************************
    /**
     * 创建自定义的返回实例
     * @param  code 状态code
     * @param  msg  消息
     * @return 响应实例
     * @author Jxin
     */
    protected HttpRsp createCustom(Integer code, String msg) {
        return new HttpRsp<>(code, msg, null);
    }
    /**
     * 创建自定义的返回实例
     * @param  code 状态code
     * @param  msg  消息
     * @param  data 数据
     * @param  <T>  数据类型
     * @return 响应实例
     * @author Jxin
     */
    protected <T> HttpRsp<T> createCustomWithData(Integer code, String msg, T data) {
        return new HttpRsp<>(code, msg, data);
    }
}
